﻿Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraSplashScreen
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraEditors

Public Class DM_LapUyNhiemChi
    Private State As Integer = 0 'trạng thái form 
    '0 mặc định
    '1 tạo mới
    '2 sửa
    '3 xóa
    Private Sub setReadonlyControl(ByVal b As Boolean) 'set readonly để không cho thao tác khi ở trạng thái mặc định - cho thao tác khi ở tạo mới - sửa
        setReadonly(Me.LayoutControl1, b)
        If b Then
            Me.IGridView1.OptionsBehavior.Editable = False
            Me.IGridView1.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.None
        Else
            Me.IGridView1.OptionsBehavior.Editable = True
            Me.IGridView1.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Bottom
        End If
        If b Then
            'dxprovidervalidation
            Me.DxValidationProvider1.ValidationMode = DXErrorProvider.ValidationMode.Auto
            setButtonTrangThaiSua(False)
        Else
            Me.DxValidationProvider1.ValidationMode = DXErrorProvider.ValidationMode.Auto
            setButtonTrangThaiSua(True)
        End If
    End Sub
    'nút thoát
    Private Sub BarButtonItemThoat_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemThoat.ItemClick
        Me.Dispose() 'chạy hàm này để giải phóng ram
        Me.Close() 'đóng form
    End Sub
    Private Sub setButtonTrangThaiSua(ByVal b As Boolean) 'set nút lưu và xóa - khi ở trạng thái sửa thì mới cho phép thao tác trên nó (enable = true) - các trạng thái khác thì không cho (enable = false)
        Me.BarButtonItemLuu.Enabled = b
        Me.BarButtonItemXoa.Enabled = b
        If b Then 'xử lý nút sửa (nếu nút lưu - xóa cho phép thì sửa ko cho phép và ngược lại)
            Me.BarButtonItemSua.Enabled = False
        Else
            Me.BarButtonItemSua.Enabled = True
        End If
    End Sub
    'nút tạo mới
    Private Sub BarButtonItemTaoMoi_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemTaoMoi.ItemClick
        If Me.BarCheckItemNhapNhanh.Checked Then
            Me.State = 1 'trạng thái tạo mới
            Me.setReadonlyControl(False)
            Me.IGridView1.MoveLast()
            Me.IGridView1.Focus()
            Me.IGridView1.AddNewRow()
            Me.IGridView1.FocusedColumn = Me.IGridView1.VisibleColumns(0)
            Me.IGridView1.ShowEditor()
        Else
            Try
                Me.setReadonlyControl(False)
                Me.NgaylapIDateEdit.Focus() 'bắt con trỏ ở mã khi tạo mới
                Me.DmlapuynhiemchiBindingSource.AddNew() 'thêm một item mới trong bindingsource
                Me.State = 1 'trạng thái tạo mới
            Catch ex As Exception
                'khi có lỗi - ngoại lệ xảy ra
            End Try
        End If

    End Sub
    Private Sub loadDuLieu()
        SplashScreenManager.ShowForm(GetType(WaitForm1))
        Me.DmtinhtrangTableAdapter.Fill(Me.PCV_FISHDataSet.dmtinhtrang)
        Me.DmmauinTableAdapter.Fill(Me.PCV_FISHDataSet.dmmauin)
        Me.DmtinhthanhTableAdapter.Fill(Me.PCV_FISHDataSet.dmtinhthanh)
        Me.DmtaikhoannganhangTableAdapter.Fill(Me.PCV_FISHDataSet.dmtaikhoannganhang)
        Me.DmlapuynhiemchiTableAdapter.Fill(Me.PCV_FISHDataSet.dmlapuynhiemchi)
        setReadonlyControl(True)
        'Me.IGridView1.BestFitColumns() 'tự co dãn các cột của igridview dựa vào độ dài cột dữ liệu
        SplashScreenManager.CloseForm()
    End Sub
    Private Sub DM_TinhTrang_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.loadDuLieu()
        Me.State = 0
        Me.IGridView1.setBatLoi("ngaylap", "not null")
        Me.IGridView1.setBatLoi("loaichungtu", "not null")
        Me.IGridView1.setBatLoi("sochungtu", "not null")
        Me.IGridView1.setBatLoi("mauin", "not null")
        Me.IGridView1.setBatLoi("taikhoannganhang", "not null")
        Me.IGridView1.setBatLoi("tendvnhantien", "not null")
        Me.IGridView1.setBatLoi("taikhoannganhangdv", "not null")
        Me.IGridView1.setBatLoi("nganhangdv", "not null")
        Me.IGridView1.setBatLoi("tinhthanh", "not null")
        Me.IGridView1.setBatLoi("sotienthanhtoan", "not null")
        Me.IGridView1.setBatLoi("loaitien", "not null")
        Me.IGridView1.setBatLoi("noidungthanhtoan", "not null")
        Me.IGridView1.setBatLoi("tinhtrang", "not null")
        Me.DmlapuynhiemchiIGridControl.ForceInitialize()
        Me.IGridView1.MoveLast()
    End Sub
    'nút Lưu
    Private Sub BarButtonItemLuu_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemLuu.ItemClick
        Try
            Me.IGridView1.PostEditor()
            Me.IGridView1.UpdateCurrentRow()
            Me.IGridView1.CloseEditor()
            Me.DmlapuynhiemchiBindingSource.EndEdit() 'end edit trước khi lưu - ghi những thay đổi 
            If Me.PCV_FISHDataSet.HasChanges Then 'coi có thay đổi dữ liệu hay ko ?
                If DevExpress.XtraEditors.XtraMessageBox.Show("Bạn có muốn 'Lưu' không ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
                    Try
                        Me.DmlapuynhiemchiTableAdapter.Update(Me.PCV_FISHDataSet.dmlapuynhiemchi)
                        Me.State = 0 'trở về trạng thái mặc định 0
                        Me.setReadonlyControl(True) 'set lại readonly
                    Catch ex As Exception
                        DevExpress.XtraEditors.XtraMessageBox.Show("Xảy ra lỗi :" & ex.Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try
                End If
            Else 'nếu ko thay đổi dữ liệu
                DevExpress.XtraEditors.XtraMessageBox.Show("Chưa có thay đổi dữ liệu ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.State = 0
                Me.setReadonlyControl(True) 'set lại readonly
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message) 'tung message khi có ngoại lệ
        End Try
    End Sub
    'Private Function getKiemTraMaTonTai(ByVal sMa As String) As Boolean 'kiểm tra sự tồn tại của mã - dùng kiểm tra chung với igridview
    '    If Me.DmlapuynhiemchiBindingSource.Find("ngaylap", sMa) = -1 Then 'nếu -1 nghĩa là ko tìm đc vị trí trong bindingsource
    '        Return False
    '    Else 'còn lại là tìm đc vị trí --> đã tồn tại
    '        Return True
    '    End If
    'End Function
    ''bắt lỗi mã
    'Private Sub MaTextEdit_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MaTextEdit.Validating
    '    If State = 1 Then 'xác định chỉ kiểm tra trong trường hợp tạo mới
    '        Try
    '            If Me.getKiemTraMaTonTai(Me.NgaylapDateEdit.EditValue) Then 'kiểm tra mã tồn tại hay chưa ?
    '                Me.NgaylapDateEdit.ErrorText = "Ngày lập này đã tồn tại"
    '                e.Cancel = True
    '            End If
    '        Catch ex As Exception

    '        End Try
    '    End If
    'End Sub
    'nút sửa
    Private Sub BarButtonItemSua_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemSua.ItemClick
        Me.setReadonlyControl(False)
        Me.State = 2
    End Sub
    'nút first - vị trí đầu tiên
    Private Sub BarButtonItemFirst_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemFirst.ItemClick
        Me.DmlapuynhiemchiBindingSource.MoveFirst()
    End Sub
    'nút previous - vị trí trước 
    Private Sub BarButtonPrevious_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonPrevious.ItemClick
        Me.DmlapuynhiemchiBindingSource.MovePrevious()
    End Sub
    'nút next - vị trí tiếp theo
    Private Sub BarButtonNext_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonNext.ItemClick
        Me.DmlapuynhiemchiBindingSource.MoveNext()
    End Sub
    'nút last - vị trí cuối cùng
    Private Sub BarButtonLast_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonLast.ItemClick
        Me.DmlapuynhiemchiBindingSource.MoveLast()
    End Sub
    'nút xóa 
    Private Sub BarButtonItemXoa_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemXoa.ItemClick
        If DevExpress.XtraEditors.XtraMessageBox.Show("Bạn có muốn xóa '" & Me.NgaylapIDateEdit.EditValue & "' không ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
            Try
                Me.DmlapuynhiemchiBindingSource.RemoveCurrent()
                Me.DmlapuynhiemchiTableAdapter.Update(Me.PCV_FISHDataSet.dmlapuynhiemchi)
                Me.State = 0
                Me.setReadonlyControl(True)
            Catch ex As Exception

            End Try

        End If
    End Sub
    'hủy thay đổi 
    Private Sub BarButtonItemHuyThayDoi_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemHuyThayDoi.ItemClick
        Me.DmlapuynhiemchiBindingSource.EndEdit()
        If Me.PCV_FISHDataSet.HasChanges Then
            If DevExpress.XtraEditors.XtraMessageBox.Show("Bạn có muốn hủy tất cả những thay đổi đang làm không ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
                Me.PCV_FISHDataSet.RejectChanges()
                Me.State = 0
                Me.setReadonlyControl(True)
            End If
        Else
            DevExpress.XtraEditors.XtraMessageBox.Show("Chưa có thay đổi dữ liệu ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Me.State = 0
            Me.setReadonlyControl(True)
        End If

    End Sub
    'nút in 
    Private Sub BarButtonItemIn_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemIn.ItemClick
        Dim report As rp_DM_LapUyNhiemChi = New rp_DM_LapUyNhiemChi
        report.ShowRibbonPreview() 'hiển thị report theo kiểu ribbon
    End Sub

    Private Sub BarButtonItemLamTuoi_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemLamTuoi.ItemClick
        Dim position As Integer = Me.DmlapuynhiemchiBindingSource.Position
        Me.loadDuLieu()
        Me.State = 0
        Me.DmlapuynhiemchiBindingSource.Position = position
    End Sub
End Class